const gulp = require('gulp')
const path = require('path')

const {
  cleanDest,
  cleanConfig
} = require('./gulp/task/clean')

const {
  generateWxss
} = require('./gulp/task/generate')

const {
  compileConfig,
  compileSource
} = require('./gulp/task/compile')

const {
  minifySource,
  minifyWxss
} = require('./gulp/task/nano')

const {
  rootDir,
  libDir,
  sourceFileName,
  fscss
} = require('./gulp/task/common')

// 监听源码文件变化
function watchSourceChange(cb) {
  gulp.watch(
    [
      path.join(path.join(rootDir, fscss(sourceFileName))),
      path.join(path.join(libDir, './**/*.scss'))
    ],
    gulp.series(
      // 首先清空 dest 目录
      cleanDest,
      // 再清空相关配置
      cleanConfig,
      // 然后根据配置文件处理源码内的 sass 文件
      compileConfig,
      // 再将按配置实现的 sass 文件编译打包为 css 源码
      compileSource,
      // 生成适用于微信小程序的样式文件
      generateWxss
    )
  )
}

gulp.task('dev',
  gulp.series(watchSourceChange)
)

gulp.task('build',
  gulp.series(
    // 首先清空 dest 目录
    cleanDest,
    // 再清空相关配置
    cleanConfig,
    // 然后根据配置文件处理源码内的 sass 文件
    compileConfig,
    // 再将按配置实现的 sass 文件编译打包为 css 源码
    compileSource,
    // 生成适用于微信小程序的样式文件
    generateWxss,
    // 压缩并生成微信小程序 min 文件
    minifyWxss,
    // 最后再压缩 css 源码并生成 min 文件
    minifySource
  )
)